/**
 * 
 * LegendShop 多用户商城系统
 * 
 *  版权所有,并保留所有权利。
 * 
 */
package com.legendshop.oa.handler;

import java.io.InputStream;

import org.springframework.web.multipart.MultipartFile;

import com.legendshop.oa.constants.AttachmentTypeEnum;
import com.legendshop.oa.constants.ImageTypeEnum;

/**
 * 附件上传文件
 *
 */
public interface AttachmentManager {

	/**
	 * 上传图片
	 * @param is 文件流
	 * @param fileName 文件名	
	 * @param fileSize 文件大小
	 * @return
	 */
	public String upload(InputStream is,String fileName,long fileSize);
	
	/**
	 * 上传图片
	 * @param file springMVC文件
	 * @return
	 */
	public String upload(MultipartFile file);
	
	/**
	 * 逻辑删除文件,修改附件表的状态
	 * @param fileName 文件路径,包括文件名
	 */
	public void deleteLogical(String fileName);
	
	/**
	 * 真实删除,从磁盘删除
	 * @param fileName 文件路径,包括文件名
	 * @return
	 */
	public int deleteTruely(String fileName);

	/**
	 * 保存附件表
	 * @param userName 用户名
	 * @param filePath 文件路径
	 * @param file 
	 * @param type 附件类型
	 * @return
	 */
	public Long saveAttachment(Long userId, String userName, String filePath, MultipartFile file,AttachmentTypeEnum type, ImageTypeEnum imgType);
	
	/**
	 * 保存附件表,默认是图片
	 * @param userName 用户名
	 * @param filePath 文件路径
	 * @param file 
	 * @param type 附件类型
	 * @return
	 */
	public Long saveAttachment(Long userId, String userName, String filePath, MultipartFile file,AttachmentTypeEnum type);
	
	/**
	 * 保存附件表
	 * @param userName 用户名
	 * @param filePath 文件路径
	 * @param is 文件流
	 * @param fileName 文件名
	 * @param fileSize 文件大小
	 * @param type 附件类型
	 * @return
	 */
	public Long saveAttachment(Long userId, String userName, String filePath, InputStream is,String fileName, long fileSize, AttachmentTypeEnum type, ImageTypeEnum imgType);
	
	/**
	 * 保存附件表
	 * @param userName 用户名
	 * @param filePath 文件路径
	 * @param file 
	 * @param type 附件类型
	 * @param treeId 节点id
	 * @return
	 */
	public Long saveAttachment(Long userId, String userName, String filePath, MultipartFile file, AttachmentTypeEnum type, long treeId, ImageTypeEnum imgType);


	/**
	 * 删除附件表记录
	 * @param filePath
	 */
	public void delAttachmentByFilePath(String filePath);


}
